package rsj.sql.org;

import com.rlyy.aibase.utils.base.Node;
import com.rlyy.aibase.utils.base.TableNode;
import rsj.annotation.DynamicSelect;
import rsj.api.org.entity.UsageReportParam;
import rsj.service.export.org.produce.OrgDownloadProduceDetail;
import rsj.service.export.org.produce.OrgProduceExportAllDetail;
import rsj.service.export.org.test.OrgDownloadTestDetail;
import rsj.service.export.org.test.OrgTestExportAllDetail;

/**
 * 机构模块-下载和导出详情
 *
 * @author yuanqinglong
 * @since 2021/6/2 16:37
 */
public interface OrgProduceDetailDao {


    /**
     * 下载生产环境产品使用细节
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = OrgDownloadProduceDetail.class, method = "generateQueryStatement")
    TableNode downloadProduceDetail(UsageReportParam usageReportParam);


    /**
     * 下载测试环境产品使用细节
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = OrgDownloadTestDetail.class, method = "generateQueryStatement")
    TableNode downloadTestDetail(UsageReportParam usageReportParam);



    /**
     * 导出生产环境的所有详情
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = OrgProduceExportAllDetail.class, method = "generateQueryStatement")
    TableNode produceExportAllDetail(UsageReportParam usageReportParam);
    /**
     * 统计生产导出总数
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link Node}
     */
    @DynamicSelect(type = OrgProduceExportAllDetail.class, method = "sqlStatistics")
    Node produceExportAllCount(UsageReportParam usageReportParam);



    /**
     * 导出测试环境的所有详情
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = OrgTestExportAllDetail.class, method = "generateQueryStatement")
    TableNode testExportAllDetail(UsageReportParam usageReportParam);
    /**
     * 测试导出所有数
     *
     * @param usageReportParam 使用情况报告参数
     * @return {@link Node}
     */
    @DynamicSelect(type = OrgTestExportAllDetail.class, method = "sqlStatistics")
    Node testExportAllCount(UsageReportParam usageReportParam);
}
